#ifndef MYNET_H
#define MYNET_H

/* .h预处理  .c用来编译 链接过程有两份相同的全局变量会链接错误 */
/* .h	图纸 / 说明书	只写 声明，不写 实现	可以被 任意 文件 #include
.c	零件 / 实现	只写 实现，不写 声明	编译一次，生成一个 .o */


    typedef enum {TCP,UDP} net_type_t; /* 枚举出两种套接字类型 */
    typedef struct
    {
        int (*open)(void);
        int (*close)(int fd);
    } net_ops_t;//ops函数指针表

    typedef struct
    {
        net_type_t type; /* TCP/UDP */
        net_ops_t ops;
    }net_ctx_t;/* 类似socket */

    net_ctx_t* net_create (net_type_t type);/* 工厂函数，根据net_type_t来生成net_ctx_t* */

    int net_open(net_ctx_t* ctx);
    int net_close(net_ctx_t* ctx,int fd);/* 向外面暴露出的是net_open 和 net_close */


#endif